Cent OS 7 更改ssh端口并禁用root登录

前言

当我们远程登录服务器时,需要输入用户名和密码,而且服务器默认的登录端口是22默认的登录用户是拥有最高权限的root。这是人尽皆知的东西。但是为了服务器安全我们会选择两种情况处理。

    1. 采用密钥的方式登录 
    2. 就是修改ssh登录端口以及新建一个用户用于远程登录。

不管采用哪种方式都必须要禁用超级管理员root登录。
查看本机是否有安装ssh服务yum list installed | grep ssh Snipaste_2019-08-21_15-19-36 如图所示就已经安装好了。
如果没有安装执行 yum install openssh-server 安装即可。

新增用户

在禁用root登录之前先要创建一个其他用户,不然在没有其他用户的情况下把root禁止登陆后就GG了,如果已经有其他用户就可以看忽略此处。

 adduser youUserName
 passwd youUserName

列如:

  • adduser testuser 创建一个 用户名为:testuser 的用户
  • passwd testuser 为testuser 这个用户设置密码。

Snipaste_2019-08-21_15-09-30
输入密码,此处即使输入了也是看不到密码的。所以不要以为没输进去。然后回车确认后,会让你再次输入密码确认。
到这里创建用户就成功了。

禁用root用户登录

其实禁用root用户登录就很简单
使用vim或者vi修改ssh的配置文件。
Tip: 按i进入编辑模式,编辑完成后按 ESC 退出编辑模式,然后 :wq 保存并退出。如果编辑过程中出错。可以不保存强制退出:首先按 Esc 退出编辑模式,然后 :q! 即可强制退出

vim /etc/ssh/sshd_config   #注意这里是`sshd_config` 而不是`ssh_config` 别搞错了

Snipaste_2019-08-21_15-48-25
找到 #PermitRootLogin yes 的地方。
把前面的 # 号去掉,然后 yes --> no 把 yes 改为 no ,表示禁止root登录 。
Snipaste_2019-08-21_14-59-08
然后保存并退出vim。
然后重启sshsystemctl restart sshd就可以了。
可以试试用root已经无法远程登录了。

修改ssh登录端口

以下操作都需要 root 权限。如果是用非root用户登录的需要先切换为root用户
su root 然后输入root用户密码就可以了
Snipaste_2019-08-21_16-12-11
修改ssh登录端口需要用到SELinux的管理工具 semanage 。先执行一下 semanage port -l | grep ssh 查看当前的ssh端口。
如果提示bash: semanage: command not found 就先安装 semanage。
yum provides semanage看到需要安装其依赖工具包 policycoreutils-python
Snipaste_2019-08-21_15-32-53 yum install policycoreutils-python 安装依赖包。
安装完成之后再次执行semanage port -l | grep ssh 就可以看到当前的ssh端口
Snipaste_2019-08-21_15-38-14

向 SELinux 中添加自定义ssh端口: semanage port -a -t ssh_port_t -p tcp 10086
查看端口是否添加成功 semanage port -l | grep ssh

Snipaste_2019-08-21_15-44-23 可以看到此处多了一个我自己添加的10086端口,已经完成一大半了。
然后修改ssh配置文件,修改ssh登录端口
vim /etc/ssh/sshd_config
Snipaste_2019-08-21_15-48-25
找到 #Port 22
Snipaste_2019-08-21_15-51-40
把前面的#号去掉,并添加一行 自定义的端口,此出把22端口也打开是为了防止端口设置出错或者防火墙没开发端口,等下就登录不进来了。等最后设置成功后再把Port 22注释掉。
Snipaste_2019-08-21_15-52-20
保存退出即可。
然后重启ssh服务 systemctl restart sshd
最后查看防火墙是否打开自定义的ssh端口

打开防火墙端口

由于CentOS7默认的的防火墙为firewall而不是iptables
向防火墙中添加端口: firewall-cmd --zone=public --add-port=10086/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新加载防火墙规则: firewall-cmd --reload 每次新增获取删除端口后都需要执行,否则不生效
查看防火墙已开发的端口:firewall-cmd --zone=public --list-ports
Snipaste_2019-08-21_16-02-49
试试使用非22端口能否成功?如果可以那就已经大功告成了。已经开放了非22端口 ssh 登录了。


等等。不是说好了禁用 22端口登录吗?
那还不简单,使用防火墙把22端口禁掉不就好了吗
firewall删除端口:firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --reload 重新加载防火墙
然后再执行firewall-cmd --zone=public --list-ports。看看22端口是不是不见了。然后再用22端口登录试试,你就会发现已经无法使用22端口登录了。
或者 把 /etc/ssh/sshd_config中的 Port 22 这行注释掉,然后重启 sshd 服务就好了。

tag(s): linux centos 
show comments · back · home